/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package cz.cuni.mff.d3s.arcas.intermediate.impl;

import cz.cuni.mff.d3s.arcas.intermediate.ElementArchitecture;
import cz.cuni.mff.d3s.arcas.intermediate.ElementArchitectureFeature;
import cz.cuni.mff.d3s.arcas.intermediate.ElementArchitecturePortBinding;
import cz.cuni.mff.d3s.arcas.intermediate.ElementArchitectureSignaturePropagation;
import cz.cuni.mff.d3s.arcas.intermediate.ElementArchitectureSubElement;
import cz.cuni.mff.d3s.arcas.intermediate.IntermediatePackage;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.internal.cdo.CDOObjectImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Element Architecture</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link cz.cuni.mff.d3s.arcas.intermediate.impl.ElementArchitectureImpl#getName <em>Name</em>}</li>
 *   <li>{@link cz.cuni.mff.d3s.arcas.intermediate.impl.ElementArchitectureImpl#getAvailablePorts <em>Available Ports</em>}</li>
 *   <li>{@link cz.cuni.mff.d3s.arcas.intermediate.impl.ElementArchitectureImpl#getSubElements <em>Sub Elements</em>}</li>
 *   <li>{@link cz.cuni.mff.d3s.arcas.intermediate.impl.ElementArchitectureImpl#getPortBindings <em>Port Bindings</em>}</li>
 *   <li>{@link cz.cuni.mff.d3s.arcas.intermediate.impl.ElementArchitectureImpl#getAllowedDeployments <em>Allowed Deployments</em>}</li>
 *   <li>{@link cz.cuni.mff.d3s.arcas.intermediate.impl.ElementArchitectureImpl#getSignaturePropagations <em>Signature Propagations</em>}</li>
 *   <li>{@link cz.cuni.mff.d3s.arcas.intermediate.impl.ElementArchitectureImpl#getFeatures <em>Features</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class ElementArchitectureImpl extends CDOObjectImpl implements ElementArchitecture {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ElementArchitectureImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return IntermediatePackage.Literals.ELEMENT_ARCHITECTURE;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected int eStaticFeatureCount() {
		return 0;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getName() {
		return (String)eGet(IntermediatePackage.Literals.ELEMENT_ARCHITECTURE__NAME, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setName(String newName) {
		eSet(IntermediatePackage.Literals.ELEMENT_ARCHITECTURE__NAME, newName);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public EList<String> getAvailablePorts() {
		return (EList<String>)eGet(IntermediatePackage.Literals.ELEMENT_ARCHITECTURE__AVAILABLE_PORTS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public EList<ElementArchitectureSubElement> getSubElements() {
		return (EList<ElementArchitectureSubElement>)eGet(IntermediatePackage.Literals.ELEMENT_ARCHITECTURE__SUB_ELEMENTS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public EList<ElementArchitecturePortBinding> getPortBindings() {
		return (EList<ElementArchitecturePortBinding>)eGet(IntermediatePackage.Literals.ELEMENT_ARCHITECTURE__PORT_BINDINGS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public EList<String> getAllowedDeployments() {
		return (EList<String>)eGet(IntermediatePackage.Literals.ELEMENT_ARCHITECTURE__ALLOWED_DEPLOYMENTS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public EList<ElementArchitectureSignaturePropagation> getSignaturePropagations() {
		return (EList<ElementArchitectureSignaturePropagation>)eGet(IntermediatePackage.Literals.ELEMENT_ARCHITECTURE__SIGNATURE_PROPAGATIONS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public EList<ElementArchitectureFeature> getFeatures() {
		return (EList<ElementArchitectureFeature>)eGet(IntermediatePackage.Literals.ELEMENT_ARCHITECTURE__FEATURES, true);
	}

} //ElementArchitectureImpl
